#include <stdio.h>
#include <string.h>
#include <unistd.h>

int main()
{
    // C接口
    printf("hello printf\n");
    fprintf(stdout, "hello fprintf\n");
    const char *fputString = "hello fputs";
    fputs(fputString, stdout);

    // 系统接口
    const char *wstring = "hello write\n";
    write(1, wstring, strlen(wstring));

    // 代码结束之前,进行创建子进程
    // 1. 如果没有进行>, 看到4条消息
    //    stdout 默认行刷新,在进程fork之前,三条C函数已经将数据进行打印输出到显示器上(外设),你的FILE内部,进程内部不存在对应的数据
    // 2. 如果进行>, 写入文件不再是显示器,而是普通文件,采用全缓冲,之前的三条C显示函数,虽然带了\n,但是不足以写满缓冲区,数据没有刷新
    //    执行fork时,stdout属于父进程,创建子进程时,紧接着就是进程退出,谁先退出,就要进行缓冲区刷新(修改)
    //    发生写时拷贝,数据显示两份
    // 3. write为什么没有,write没有FILE,用的是fd,没有C提供的缓冲区
    
    fork();
    return 0;
}